
const db = require('../db/index')

// 获取文章分类列表数据
exports.getArticleCates = (req, res) => {
    // 获取文章分类sql语句
    // 根据分类的状态，获取所有未被删除的分类列表数据
    // is_delete 为0 表示没有被标记删除
    const sqlStr = 'select * from ev_article_cate where is_delete=0 order by id asc'
    db.query(sqlStr, (err, result) => {
        if (err) return res.cc(sqlStr)
        res.send({
            status: 200,
            message: "获取文章分类列表成功",
            data: result,
        })
    })
}

// 新增文章分类
exports.addArticleCates = (req, res) => {
    // 首先查看添加的分类在数据库表中有没有重复
    const sqlStr = 'select * from ev_article_cate where name = ? or alias = ?'

    // sql查询
    db.query(sqlStr, [req.body.name, req.body.alias], (err, result) => {
        if (err) return res.cc(err)
        if (result.length === 2) {
            return res.cc("分类名称和别名都被占用!")
        }
        if (result.length === 2 && req.body.name === result[0].name && req.body.alias === result[0].alias) return res.cc("分类名称和别名都被占用！")
        if (result.length === 1 && req.body.name === result[0].name) return res.cc("分类名称被占用")
        if (result.length === 1 && req.body.alias === result[0].alias) return res.cc("别名被占用")

        // 在数据检验成功后像数据库中添加分类和别名 并且默认没有被删除
        const addSqlStr = 'insert into ev_article_cate set ?'
        db.query(addSqlStr, { name: req.body.name, alias: req.body.alias, is_delete: 0 }, (err, results) => {
            if (err) return res.cc(err)
            if (results.affectedRows !== 1) {
                return res.cc("新增文章分类失败")
            }
            res.cc(200, "新增文章分类成功")
        })
    })
}

// 删除文章分类
exports.deleteArticleCates = (req, res) => {
    // 删除文章的sql语句
    const sqlStr = `update ev_article_cate set is_delete=1 where id=?`
    console.log(req);
    // 执行sql语句
    db.query(sqlStr, req.params.id, (err, result) => {
        console.log(req.body.id);
        console.log(sqlStr);
        // 执行sql语句失败
        if (err) {
            return res.cc(err)
        }
        // sql语句执行成功但影像条数不等于1
        if (result.affectedRows !== 1) {
            return res.cc("删除文章失败！")
        }
        res.cc(200, "删除文章成功")
    })
}

// 根据id获取文章分类
exports.getArticleCateById = (req, res) => {
    // 根据id获取文章分类的数据
    const sqlStr = 'select * from ev_article_cate where id = ?'
    db.query(sqlStr, req.params.id, (err, result) => {
        if (err) {
            return res.cc(err)
        }
        if (result.length !== 1) {
            res.cc("获取文章分类失败！")
        }
        res.send({
            status: 200,
            message: "获取文章分类成功",
            data: result[0],
        })
    })
}

// 根据id更新文章分类数据
exports.updateCateById = (req, res) => {
    // 查询分类名称与别名是否被占用
    const sqlStr = 'select * from ev_article_cate where id<>? and (name=? or alias=?)'
    db.query(sqlStr, [req.body.id, req.body.name, req.body.alias], (err, result) => {
        if (err) return res.cc(err)
        // 分类名和别名都被占用
        if (result.length === 2) {
            return res.cc("分类名和别名都被占用！")
        }
        if (result.length === 1 && result[0].name === req.body.name && result[0].alias === req.body.alias) {
            return res.cc("分类名和别名都被占用！")
        }
        // 分类名被占用
        if (result.length === 1 && result[0].name === req.body.name) {
            return res.cc("分类名被占用！")
        }
        // 别名被占用
        if (result.length === 1 && result[0].alias === req.body.alias) {
            return res.cc("别名被占用！")
        }
        // 分类名和别名都没被占用的情况下执行更新操作
        //更新文章分类的sql语句
        const sqlStr1 = 'update ev_article_cate set ? where id=?'
        db.query(sqlStr1, [req.body, req.body.id], (err, result) => {
            if (err) return res.cc(err)
            // SQL 语句执行成功，但是影响行数不等于 1
            if (result.affectedRows !== 1) return res.cc('更新文章分类失败！')
            res.cc(200, "更新成功")
        })
    })
}